#pragma once

#include "engine/base/CUIInstructionBase.h"

namespace BombBox
{
	#define s_pEventReceiver (BombBox::EventReceiver::getSingletonPtr())

	class EventReceiver : public OSLib::Singleton<EventReceiver>
	{
	public:
		EventReceiver(void);
		~EventReceiver(void);

		//!
		void initialize(void);

	public:
		GUI::Bool onMouseLButtonDown( const GUI::CUIInstructionBase& inst );
		GUI::Bool onMouseRButtonDown( const GUI::CUIInstructionBase& inst );
		GUI::Bool onMouseLButtonUp( const GUI::CUIInstructionBase& inst );
		GUI::Bool onMouseRButtonUp( const GUI::CUIInstructionBase& inst );
		GUI::Bool onMouseWheel( const GUI::CUIInstructionBase& inst );
		GUI::Bool onMouseMove( const GUI::CUIInstructionBase& inst );
		GUI::Bool onKeyUp( const GUI::CUIInstructionBase& inst );
		GUI::Bool onKeyDown( const GUI::CUIInstructionBase& inst );

	protected:
		bool	m_bMouseButtonDown;
	};

}